// 解题思路：
// 找 a -> b 的最小操作次数（只能）
// 正难则反：正向计算的时候不知道应该是乘还是减，可以逆向计算
// 当 target <= startValue，只能让 target++，需要计算 startValue - target 次
// 当 target > startValue，如果 target 是奇数，只能 + 1，如果 target 是偶数只能 / 2

public class Solution {
    public int brokenCalc(int startValue, int target) {
        int count = 0;
        long a = startValue; long b = target;

        while(a != b){
            if(a > b){
                count += (a - b);
                return count;
            }
            if(a < b){
                if(b % 2 == 1){
                    b++;
                    count++;
                }else{
                    b /= 2;
                    count++;
                }
            }
        }

        return count;
    }
}
